package com.ai.web;

import com.ai.common.ParentResult;
import com.ai.sevice.config.ConfigService;
import com.ai.sevice.config.request.AddOrUpdateConfigRequest;
import com.ai.sevice.config.request.DeleteConfigRequest;
import com.ai.sevice.config.request.GetConfigListRequest;
import com.ai.sevice.config.request.GetConfigRequest;
import com.ai.sevice.config.response.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author ：shengwenyang
 * @date ：Created in 2023/4/23 16:44
 * @description：
 * @version:
 */
@Slf4j
@RestController
@RequestMapping(value = "config")
@CrossOrigin(origins = "*",maxAge = 3600)
public class ConfigController {

    @Autowired
    private ConfigService configService;

    //////////////////////////////////配置接口///////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 同步所有配置
     * @return
     */
    @GetMapping(value = "syncAll")
    public ParentResult syncAll(){
        configService.initConfig();
        return new ParentResult();
    }

    /**
     * 获取配置
     * @param request
     * @return
     */
    @PostMapping(value = "get")
    public GetConfigResponse get(@RequestBody GetConfigRequest request){
        return configService.get(request);
    }

    /**
     * 获取配置模块列表
     * @return
     */
    @GetMapping(value = "getModuleList")
    public GetModuleListResponse getModuleList(){
        return configService.getModuleList();
    }

    /**
     * 获取配置列表
     * @param request
     * @return
     */
    @PostMapping(value = "getConfigList")
    public GetConfigListResponse getConfigList(@RequestBody GetConfigListRequest request){
        return configService.getConfigList(request);
    }

    /**
     * 新增或更新配置
     * @param request
     * @return
     */
    @PostMapping(value = "addOrUpdate")
    public AddOrUpdateConfigResponse addOrUpdate(@RequestBody AddOrUpdateConfigRequest request){
        String privacyPolicy = "欢迎来到“智能AI生活小帮手小程序”（以下简称“小帮手”）。\n" +
                "在使用小帮手提供的AI问答体验服务（以下简称“本服务”）前，请您务必仔细阅读并理解透彻本《智能AI生活小帮手服务协议》（以下简称“本协议”）。本协议内条款可能会不时修改并更新，继续使用服务即表示接受更新后的条款。如果您不同意本协议，请停止使用本服务。如果您选择继续使用本服务，请确保您充分知悉并接受本协议：\n" +
                "1.隐私协议\n" +
                "根据《常见类型移动互联网应用程序必要个人信息范围规定》，小帮手属于“浏览器类”，基本功能服务为“浏览互联网信息资源”，无须个人信息，即可使用基本功能服务。我们仅会出于本隐私政策所述的以下目的在正当必要的原则下收集和使用您的个人信息，如果超出以下目的收集和使用您的个人信息，我们会单独说明并获得您的同意。\n" +
                "（1）帮助您修改昵称和头像：您自行获取微信昵称和微信头像\n" +
                "（2）客户服务\n" +
                "当您向小帮手平台提交意见反馈时，为了方便与您联系或帮助您解决问题，我们可能需要您提供联系方式。如您拒绝提供上述信息，也能正常使用。\n" +
                "2.个人信息保护说明\n" +
                "2.1.保护用户个人信息是本平台的一项基本原则，小帮手将会采取合理的措施保护用户的个人信息。除法律法规规定的情形外，未经用户许可本平台不会向第三方公开、透露用户个人信息。上述“隐私协议”介绍了您在使用本服务时，本服务如何收集和使用您的个人信息。您使用本服务，即表示您同意小帮手可以按照“隐私协议”收集和使用您的个人信息。本平台对相关信息采用专业加密存储与传输方式，保障用户个人信息的安全。\n" +
                "\n" +
                "2.2.您在申请本服务过程中，需要填写一些必要的信息，请保持这些信息的真实、准确、合法、有效并注意及时更新，以便本平台向您提供及时有效的帮助，或更好地为您提供服务。根据相关法律法规和政策，请您填写真实的身份信息。若您填写的信息不完整或不准确，则可能无法使用本服务或在使用过程中受到限制。\n" +
                "\n" +
                "2.3.一般情况下，您可随时浏览、修改自己提交的信息，但出于安全性和身份识别（如帐号申诉期间）的考虑，您可能无法修改注册时提供的初始注册信息及其他验证信息。\n" +
                "\n" +
                "2.4.本平台将运用各种安全技术和程序建立完善的管理制度来保护您的个人信息，以免遭受未经授权的访问、使用或披露。\n" +
                "\n" +
                "2.5.未经您的同意，本平台不会向本平台以外的任何公司、组织和个人披露您的个人信息，但法律法规另有规定的除外。\n" +
                "\n" +
                "2.6.本平台非常重视对未成年人个人信息的保护。若您是18周岁以下的未成年人，在使用小帮手服务前，应事先取得您家长或法定监护人的书面同意。\n" +
                "\n" +
                "2.7.您应对通过本服务了解、接收或可接触到的包括但不限于其他用户在内的任何人的个人信息予以充分尊重，您不应以搜集、复制、存储、传播或以其他任何方式使用其他用户的个人信息，否则，由此产生的后果由您自行承担。\n" +
                "\n" +
                "3.免责声明\n" +
                "3.1本服务目前还处于探索阶段，我们不断改进服务，以使其变得更好。服务可能会进行修改和更改，包括但不限于艺术风格、算法以及可用的功能。我们不保证服务的质量、稳定性、正常运行时间或可靠性。使用本服务请确保自定义输入文本未侵害他人权益，同时请勿输入政治相关及违反法律法规的内容。\n" +
                "3.2本服务具体的使用规范请严格按照下方《服务使用协议》的内容。此外，无论是否实际阅读本声明，**您通过网络页面点击确认同意本声明或实际使用本平台（“我方”）提供的本服务，均表示您与我方已就本声明达成一致并同意接受本声明的全部约定内容。**如果您不同意本声明的任意内容，或者无法准确理解我方对本声明条款的解释，请不要同意或使用本服务。\n" +
                "3.3您理解并且同意，为持续改善本服务，除非有相反证明，您使用本服务上传、发布或传输内容即代表了您有权且同意在全世界范围内，永久性的、不可撤销的、免费的授予我方及/或原始技术提供方的全部产品或服务对该内容的存储、使用、发布、复制、修改、改编、出版、翻译、据以创作衍生作品、传播、表演和展示等权利；将内容的全部或部分编入其他任何形式的作品、媒体、技术中的权利；对您的上传、发布的内容进行商业开发的权利及其相关宣传和推广等服务的权利；上述授权为普通授权许可。\n" +
                "3.4您需特别注意，由于小帮手服务生成的所有内容都是由人工智能模型生成，虽已经过不断的自动及人工敏感数据过滤，但仍不排除其中部分信息具有瑕疵、不合理或引发不快的情形，您对使用小帮手服务进行提问生成的内容负有审慎审核的义务，如生成的文本涉嫌违法违规、敏感有害、违反公序良俗等情况，您不得通过截图、下载、拍照、录像、屏幕捕捉等方式留存相关内容，并不得对此进行发送、传播或商业化使用。否则，因您使用生成内容进行任何违法或不当的活动等被追责所产生的所有责任，由您自行承担。小帮手因此产生损失的，有权向您追责。\n" +
                "\n" +
                "4.服务使用协议\n" +
                "4.1您承诺，严格依照本声明使用本服务，并且不会利用本服务主动或被动进行任何违法或不当的活动，发布、传送或分享含有下列内容之一的信息：\n" +
                "（1）反对宪法所确定的基本原则的；\n" +
                "（2）危害国家安全，泄露国家秘密，颠覆国家政权，破坏国家统一的；\n" +
                "（3）损害国家荣誉和利益的；\n" +
                "（4）煽动民族仇恨、民族歧视、破坏民族团结的；\n" +
                "（5）破坏国家宗教政策，宣扬邪教和封建迷信的；\n" +
                "（6）散布谣言，扰乱社会秩序，破坏社会稳定的；\n" +
                "（7）散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的；\n" +
                "（8）侮辱或者诽谤他人，侵害他人合法权利的；\n" +
                "（9）含有虚假、诈骗、有害、胁迫、侵害他人隐私、骚扰、侵害、中伤、粗俗、猥亵、或其它道德上令人反感的内容；\n" +
                "（10）含有中国或其他国家管辖法所适用的法律、法规、规章、条例以及任何具有法律效力之规范所限制或禁止的其它内容的。您应当对使用本服务是否符合法律法规规定进行必要审查，并由您承担由此产生的所有责任。您确认并同意，我方不会因为本服务或您使用本服务违反上述约定，而需要承担任何责任。\n" +
                "4.2您使用本服务不得侵害他人权益（包括但不限于著作权、专利权、商标权等知识产权与其他权益）。同时，您同意并承诺，您使用本服务所提供、使用的文本内容已获得了充分、必要且有效的合法许可及授权。\n" +
                "4.3您同意并承诺，在使用本服务时，不会披露任何保密、敏感等信息。\n" +
                "4.4我方有权因为业务发展或法律法规的变动而随时对本服务的内容和/或提供方式进行变动，或者暂停或终止本服务。您同意我方将不对因上述情况导致的任何后果，向您或第三方承担任何责任。\n" +
                "4.5在任何情况下，我方均不就因本服务所发生的任何直接性、间接性、后果性、惩戒性、偶然性、特殊性的损害(包括但不限于：您使用本服务而遭受的利润损失)，承担任何责任(即使您已事先被告知该等损害发生的可能性)。\n" +
                "4.6若您违反本声明任何约定，则我方有权随时单方面终止本声明，且我方无需承担任何责任。我方保留随时以任何理由暂停或禁止您访问服务的权利。同时，我方有权根据实际损失向您请求赔偿。\n" +
                "4.7除双方另有约定外，本声明之解释与适用，以及与本声明有关的争议，均依照中华人民共和国法律予以处理(不包含冲突法)，并由我方所在地有管辖权的人民法院管辖。\n" +
                "4.8请勿恶意使用敏感词生成违规图片，违规累积一定次数后会被处罚封禁1、3、7天。情况恶劣用户将会永久封禁。敏感内容包含：\n" +
                "（1）煽动民族仇恨、民族歧视、破坏民族团结的；\n" +
                "（2）破坏国家宗教政策，宣扬邪教和封建迷信的；\n" +
                "（3）散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的；\n" +
                "（4）含有虚假、诈骗、有害、胁迫、侵害他人隐私、骚扰、侵害、中伤、粗俗、猥亵、或其它道德上令人反感的内容；\n" +
                "4.9根据相关法律规定，用户不得使用自动化工具或其他技术手段调用本产品的服务接口，或以其他方式干扰、破坏本产品的正常运行。否则小帮手有权不经通知随时对相关内容进行清除，并视行为情节对违规帐号处以包括但不限于警告、限制或禁止使用部分或全部功能、帐号封禁直至注销的处理，并公告处理结果。";

        String userAgreement = "感谢您使用本小程序服务。在使用本小程序服务前，请您仔细阅读并理解本协议。如您不同意本协议的任何内容，请您停止使用本小程序服务。\n" +
                "\n" +
                "1.协议的范围\n" +
                "\n" +
                "本协议是您（下称“用户”或“您”）与本小程序之间关于用户使用本小程序服务所订立的协议。本协议描述用户与本小程序之间关于服务内容、服务条款、用户权利和义务等方面的权利义务关系。\n" +
                "\n" +
                "2.服务内容\n" +
                "\n" +
                "本小程序为用户提供信息浏览、信息查询等服务。\n" +
                "\n" +
                "3.用户账号\n" +
                "\n" +
                "用户在使用本小程序服务前会自动生成一个账号。用户应该保管好自己的账号信息，不得将账号信息泄露给第三方。用户应对使用账号进行的所有活动负责。\n" +
                "\n" +
                "4.用户行为规范\n" +
                "\n" +
                "用户在使用本小程序服务时应遵守国家法律法规，不得利用本小程序进行违法犯罪活动。用户不得利用本小程序服务进行以下行为：\n" +
                "\n" +
                "（1）发布、传送、传播、存储违法、违规、侵犯他人权益的内容；\n" +
                "\n" +
                "（2）利用本小程序进行任何危害计算机系统安全的行为；\n" +
                "\n" +
                "（3）冒充他人或机构，或以虚假身份使用本小程序服务；\n" +
                "\n" +
                "（4）利用本小程序进行广告、推销等商业行为；\n" +
                "\n" +
                "（5）其他违反法律法规、侵犯他人合法权益的行为。\n" +
                "\n" +
                "5.知识产权\n" +
                "\n" +
                "本小程序所包含的所有内容，包括但不限于文字、图片、音频、视频、软件、程序、代码、界面设计、商标、标识等，均受到知识产权法律法规的保护。未经本小程序或相关权利人授权，用户不得擅自使用、修改、复制、传播、展示、制作衍生品或者以其他方式进行非法使用。\n" +
                "\n" +
                "6.免责声明\n" +
                "\n" +
                "本小程序不对用户使用本小程序服务产生的任何直接或间接损失承担责任，包括但不限于因本小程序服务中断、用户数据丢失、用户账号被盗等情况所导致的损失。\n" +
                "\n" +
                "7.协议的修改和解释\n" +
                "\n" +
                "本小程序有权根据需要修改本协议，并在本小程序上公示。用户应当及时查阅本协议的最新版本。如果用户不同意修改后的协议内容，应立即停止使用本小程序服务。如果用户继续使用本小程序服务，则视为用户已经接受修改后的协议。\n" +
                "\n" +
                "8.法律适用和争议解决\n" +
                "\n" +
                "本协议的订立、执行和解释均适用中华人民共和国法律。如发生本协议的争议，双方应尽量友好协商解决；如果协商不成，任何一方均有权将争议提交至本协议签订地有管辖权的人民法院解决。";

        if (request.getValue() != null && request.getValue().equals("privacyPolicy")) {
            request.setValue(privacyPolicy);
        }
        if (request.getValue() != null && request.getValue().equals("userAgreement")) {
            request.setValue(userAgreement);
        }
        return configService.addOrUpdate(request);
    }

    /**
     * 删除配置
     * @param request
     * @return
     */
    @PostMapping(value = "delete")
    public DeleteConfigResponse delete(@RequestBody DeleteConfigRequest request){
        return configService.delete(request);
    }
    //////////////////////////////业务接口///////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 获取ai卡片列表
     * @return
     */
    @GetMapping(value = "getAiCardList")
    public GetAiCardListResponse getAiCardList(@RequestHeader(value = "uid", defaultValue = "") String uid){
        return configService.getAiCardList(uid);
    }

    /**
     * 获取ai卡片列表
     * @return
     */
    @GetMapping(value = "getAiExample")
    public GetAiExampleResponse getAiExample(@RequestParam String optionType){
        return configService.getAiExample(optionType);
    }


}
